{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "51af5673-49f4-45b7-be9b-166d4a1f7009",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "from transformers import AutoModel, AutoTokenizer, BitsAndBytesConfig\n",
    "\n",
    "# 模型ID或本地路径\n",
    "model_name_or_path = 'THUDM/chatglm3-6b'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e208d813-ec74-403d-b350-9a250dceb7af",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:04<00:00,  1.47it/s]\n"
     ]
    }
   ],
   "source": [
    "_compute_dtype_map = {\n",
    "    'fp32': torch.float32,\n",
    "    'fp16': torch.float16,\n",
    "    'bf16': torch.bfloat16\n",
    "}\n",
    "\n",
    "# QLoRA 量化配置\n",
    "q_config = BitsAndBytesConfig(load_in_4bit=True,\n",
    "                              bnb_4bit_quant_type='nf4',\n",
    "                              bnb_4bit_use_double_quant=True,\n",
    "                              bnb_4bit_compute_dtype=_compute_dtype_map['bf16'])\n",
    "\n",
    "# 加载量化后模型(与微调的 revision 保持一致）\n",
    "base_model = AutoModel.from_pretrained(model_name_or_path,\n",
    "                                      quantization_config=q_config,\n",
    "                                      device_map='auto',\n",
    "                                      trust_remote_code=True,\n",
    "                                      revision='b098244')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "50e5370a-2395-4dfe-9367-906a06083192",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ChatGLMForConditionalGeneration(\n",
       "  (transformer): ChatGLMModel(\n",
       "    (embedding): Embedding(\n",
       "      (word_embeddings): Embedding(65024, 4096)\n",
       "    )\n",
       "    (rotary_pos_emb): RotaryEmbedding()\n",
       "    (encoder): GLMTransformer(\n",
       "      (layers): ModuleList(\n",
       "        (0-27): 28 x GLMBlock(\n",
       "          (input_layernorm): RMSNorm()\n",
       "          (self_attention): SelfAttention(\n",
       "            (query_key_value): Linear4bit(in_features=4096, out_features=4608, bias=True)\n",
       "            (core_attention): CoreAttention(\n",
       "              (attention_dropout): Dropout(p=0.0, inplace=False)\n",
       "            )\n",
       "            (dense): Linear4bit(in_features=4096, out_features=4096, bias=False)\n",
       "          )\n",
       "          (post_attention_layernorm): RMSNorm()\n",
       "          (mlp): MLP(\n",
       "            (dense_h_to_4h): Linear4bit(in_features=4096, out_features=27392, bias=False)\n",
       "            (dense_4h_to_h): Linear4bit(in_features=13696, out_features=4096, bias=False)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "      (final_layernorm): RMSNorm()\n",
       "    )\n",
       "    (output_layer): Linear(in_features=4096, out_features=65024, bias=False)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "base_model.requires_grad_(False)\n",
    "base_model.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bd31c346-3e7f-40d6-8617-17b34ca54074",
   "metadata": {},
   "outputs": [],
   "source": [
    "tokenizer = AutoTokenizer.from_pretrained(model_name_or_path,\n",
    "                                          trust_remote_code=True,\n",
    "                                          revision='b098244')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "4dcf495a-5f9b-46db-a090-d32595a5f1b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "input_text = \"解释下乾卦是什么？\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3c6d1d3e-e6b5-486c-b2af-6173de698f34",
   "metadata": {},
   "outputs": [],
   "source": [
    "response, history = base_model.chat(tokenizer, query=input_text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ee42d87f-ad1b-4f7a-9731-90c922ded75e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "乾卦是《易经》中的第一卦，也是八卦之一。乾卦象征着天、强、刚、动、刚健等含义。乾卦由两个阴爻夹一个阳爻构成，象征天宇广阔，刚强有力。\n",
      "\n",
      "乾卦的卦辞为：“乾，元亨利贞。亨利，元、亨，利、贞。”这是对乾卦的赞美之辞，表达了乾卦所象征的刚强、积极、刚健的品质。\n",
      "\n",
      "乾卦的六爻分别代表了不同的时间段和不同的状态。从下至上，分别为：初六、二六、三六、四六、五六、上六。每一爻的阴阳组合和位置关系组合成了不同的卦象，从而代表了不同的自然现象、人事事物和道德品质。\n",
      "\n",
      "乾卦在《易经》中具有很高的地位，被认为是一种标准和榜样。它提醒人们要积极向上，努力进取，保持强劲的生命力，勇往直前。\n"
     ]
    }
   ],
   "source": [
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ca5d47e7-02bb-4b9e-aec6-15f9a1d46268",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "蒙卦是《易经》中的卦象之一，它的卦辞是：\n",
      "\n",
      "“蒙，元吉，亨。亨，利见大人。”\n",
      "\n",
      "蒙卦是由两个阴爻夹一个阳爻构成，象征着云彩覆盖天空，太阳仍然能够照耀大地。它是一种积极向上的力量，意味着蒙受教育和培养，以及遵循正确的方法和道路，可以获得成功和幸福。\n",
      "\n",
      "蒙卦的卦辞中提到了“元吉”，这是指最根本的吉祥，表明这个卦象具有非常积极和正面的意义。同时，“亨”字也有“通”的意思，意味着这个卦象预示着事物的发展将会顺利，达成目标。\n",
      "\n",
      "此外，卦辞还提到了“利见大人”，这意味着在追求成功和幸福的过程中，需要有强大的支持和帮助。因此，蒙卦告诉我们，要取得成功，需要不断学习和成长，同时也要寻求有能力和经验的人的帮助和支持。\n"
     ]
    }
   ],
   "source": [
    "input_text = \"解释下蒙卦是什么？\"\n",
    "response, history = base_model.chat(tokenizer, query=input_text)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "cd7c53d1-7dba-4422-9582-5d2a96dfae2f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from peft import PeftModel, PeftConfig\n",
    "\n",
    "epochs = 3\n",
    "\n",
    "peft_model_path = f\"../models/{model_name_or_path}-epoch{epochs}\"\n",
    "\n",
    "config = PeftConfig.from_pretrained(peft_model_path)\n",
    "qlora_model = PeftModel.from_pretrained(base_model, peft_model_path)\n",
    "training_tag=f\"ChatGLM3-6B(Epoch=3, automade-dataset(fixed))\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "15a02259-6831-4e54-bb14-2434f313f8a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def compare_chatglm_results(query, base_model, qlora_model, training_tag):\n",
    "    base_response, base_history = base_model.chat(tokenizer, query)\n",
    "\n",
    "    inputs = tokenizer(query, return_tensors=\"pt\").to(0)\n",
    "    ft_out = qlora_model.generate(**inputs, max_new_tokens=512)\n",
    "    ft_response = tokenizer.decode(ft_out[0], skip_special_tokens=True)\n",
    "    \n",
    "    print(f\"问题：{query}\\n\\n原始输出：\\n{base_response}\\n\\n\\n微调后（{training_tag}）：\\n{ft_response}\")\n",
    "    return base_response, ft_response"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3f6eefa6-4bc9-41b3-9a40-2c046ae84e30",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "问题：解释下蒙卦是什么？\n",
      "\n",
      "原始输出：\n",
      "蒙卦原文：蒙。亨。匪我求童蒙，童蒙求我。初筮告，再三渎，渎则不告。利贞。\n",
      "\n",
      "象曰：山下出泉，蒙。君子以果行育德。\n",
      "\n",
      "白话文解释：蒙卦。通泰。不是我去求教于小孩子，而是小孩子来求教于我。第一次占卜，神明告诉了他。两次占卜，神明不再告诉了。这是吉利的贞卜。\n",
      "\n",
      "卦象分析：上卦是艮，艮为山；下卦是坎，坎为泉。山出泉，取实然出。这是蒙卦的卦象。君子观此卦象，从而以果敢的行为培养品德。\n",
      "\n",
      "占蒙卦时，卦象是上艮下坎，即孔子所云“君子得便宜，小人的独占”，将变成君子之国，这是吉象。占完蒙卦，便是贞卦的卦象，这是占卜的结果，说明向神明请求占卜时，如果神明不应，则需再拜三拜，否则，神明也不会告诉他。贞卦的卦象是蒙卦 further 解读：蒙卦的卦象是艮下坎上，坎为泉，艮为山，山下出泉。泉源浅薄，难以流动， 蒙卦的卦象是上艮下坎。山出泉，取实然出。汁液从山下井里中被提取出来，而井里的水却无法蒙住。君子观此卦象，从而以果敢的行为培养品德。占蒙卦时，君子得便宜，小人的独占。占蒙卦卦象：卦名蒙，断语断吉。\n",
      "\n",
      "\n",
      "微调后（ChatGLM3-6B(Epoch=3, automade-dataset(fixed))）：\n",
      "[gMASK]sop 解释下蒙卦是什么？ 蒙卦原文 蒙。亨。匪我求童蒙，童蒙求我。初筮告，再三渎，渎则不告。利贞。 象曰：山下出泉，蒙。君子以果行育德。 白话文解释 蒙卦：通泰。不是我有求于幼稚愚昧的人，而是幼稚愚昧的人有求于我。第一次占筮，神灵告诉了他。轻慢不敬的再三占筮，轻慢不敬的占筮，神灵就不会告诉他。但还是吉利的卜问。 《象辞》说：上卦为艮，象征山；下卦为坎，象征泉。山下有泉，泉水喷涌而出，这是蒙卦的卦象。君子观此卦象，取法于一往无前的山泉，从而以果敢坚毅的行动来培养自身的品德。 《断易天机》解 蒙卦艮上坎下，为离宫四世卦。蒙即蒙昧，主回还往复，疑惑不前，多忧愁过失，乃是凶卦。 北宋易学家邵雍解 智慧未开，蒙昧闭塞；犹豫不决，缺乏果断。 得此卦者，智慧犹如童蒙，不辨是非，迷失方向；若能顺贤师良友之教，启其聪明则亨通。 台湾国学大儒傅佩荣解 时运：蓄积德行，出而用世。 财运：矿山生意，果决则吉。 家宅：君子居吉；婚姻之始。 身体：驱去邪热，可保平安。 传统解卦 这个卦是异卦（下坎上艮）相叠，艮是山的形象，喻止；坎是水的形象，喻险。卦形为山下有险，仍不停止前进，是为蒙昧，故称蒙卦。但因把握时机，行动切合时宜，因此，具有启蒙和通达的卦象。 大象：蒙者，昏而无所见也，故宜「启蒙」。 运势：初时迷惑不知方向，须忍耐待机而动，凡事多听取别人意见，则运可通。 事业：事业开始，混乱无序，危机四伏，以勇敢坚毅的行动可以扭转局面。然而必须接受严格教育，培养这种奋发图强的精神。务必脚踏实地，最忌好高骛远，否则会陷入\n"
     ]
    }
   ],
   "source": [
    "base_response, ft_response = compare_chatglm_results(\"解释下蒙卦是什么？\", base_model, qlora_model, training_tag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c06120dc-b615-4aaa-9cdb-16a204309dcb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "问题：解释下豫卦是什么？\n",
      "\n",
      "原始输出：\n",
      "豫卦原文：豫。利建侯行师。 象曰：雷出地奋，豫。先王以作乐崇德，殷荐之上帝，以配祖考。 白话文解释：豫卦：有利于封侯建国，出兵打仗。 《象辞》说：本卦上卦为震，震为雷，下卦为坤，坤为地。春雷轰鸣，大地震动，催发万物，这是豫卦的卦象。先王观此卦象，取法于声满大地的雷鸣，制作音乐，歌功颂德，光荣归于上帝，光荣归于祖考。 《断易天机》解 豫卦震上坤下，为震宫初世卦。雷出地奋，象征春雷使万物苏醒，君王之威行于子民，因此有利于建候、行师。 北宋易学家邵雍解 雷出地上，悦服快乐；安乐之中，预防忧患。 得此卦者，顺天应时，事事吉祥，可得长辈之助，但须防色难，切不可沉迷于声色欢场之中。 台湾国学大儒傅佩荣解 时运：春雷发动，诸事吉祥。 财运：新货上市，必有大利。 家宅：祈神祭祖，可保平安。 身体：祷告静心。 传统解卦 这个卦是异卦（下坤上震）相叠。震为雷，坤为地。春雷轰鸣，大地振作，万物改换新貌，因此象征自意。 大象：雷从地下 emerge不宜脚生，阳从内部动，而阴从外部来，改换环境。 运势：诸事吉祥，可得长辈之助，但须防色难，切不可沉迷于声色欢场之中。 事业：一切顺利，可以得志，但切忌贪心，如全国上下一心，必可成就大事业。此时应特别注意防范周围的小人，以免影响事业的发展，但总体而言，仍可顺利发展，尽量减少意外，避免事故。 经商：市场环境比较稳定，能够顺利地实现商业目的，但务必小心谨慎，不要冒险，不要追求快速成功，遵守商业道德，借鉴他人的经验，并采取有效的手段，可能会更成功。 求名：耐心等待，不要冒险，努力奋斗，相信自己，保持乐观，坚持原则，必能实现目标。 婚恋：双方相互尊重，形势允许的话，可以顺利地举行婚礼，但注意寻找合适的对象。 决策：人生顺利，成功概率很高，可以轻松地实现自己的目标。但必须符合道德原则，尤其要谨慎处理事物，避免意外事件。一定可以顺利产生他人帮助，如果可能，应该主动帮助他人，这样会更为安全。 第六十一卦的哲学含义 豫卦卦象，雷地豫卦的象征意义 豫卦，这个卦是异卦相叠，下卦为坤，上卦为震。震为雷，坤为地。春雷轰鸣，大地振作，万物改换新貌，因此象征自意。 卦象中，震在上坤在下，象征雷从地上 emerge，雷从高处下，象征着改换环境。 豫卦位于坤卦之后，《序卦》中这样解释道：“物不可以终故受之以豫，故受之以豫。”改朝换代，所以必须有愉快的心情，所以接着要谈豫卦。 《象》中这样解释豫卦：雷出地奋，豫。先王以作乐崇德，殷荐之上帝，以配祖考。这里指出：豫卦的卦象是坤卦下震卦上，雷从地上奋起，象示了改正用法上弊端，各行各业都感到活跃，国君于是兴致心情，行赏礼尊敬上帝，祭祀先祖。 豫卦象征改换环境，引诱人产生欲望，因此也被称为“诱卦”。 从卦象上分析，震为雷，代表突发的意外事件，坤为地，代表活跃的环境。意外事件使万物改换新貌，所以顺从 desires，就会产生欲望，顺从人类自身，就会产生欲望，所以豫卦的象征意义是改换环境。 豫卦启示人们不可沉迷于欲望，只有节制，才能实现愿望。\n",
      "\n",
      "\n",
      "微调后（ChatGLM3-6B(Epoch=3, automade-dataset(fixed))）：\n",
      "[gMASK]sop 解释下豫卦是什么？ 豫卦原文 豫。利建侯行师。 象曰：雷出地奋，豫。先王以作乐崇德，殷荐之上帝，以配祖考。 白话文解释 豫卦：有利于封侯建国，出兵打仗。 《象辞》说：本卦上卦为震，震为雷，下卦为坤，坤为地。春雷轰鸣，大地震动，催发万物，这是豫卦的卦象。先王观此卦象，取法于声满大地的雷鸣，制作音乐，歌功颂德，光荣归于上帝，光荣归于祖考。 《断易天机》解 豫卦震上坤下，为震宫初世卦。雷出地奋，象征春雷使万物苏醒，君王之威行于子民，因此有利于建候、行师。 北宋易学家邵雍解 雷出地上，悦服快乐；安乐之中，预防忧患。 得此卦者，顺天应时，事事吉祥，可得长辈之助，但须防色难，切不可沉迷于声色欢场之中。 台湾国学大儒傅佩荣解 时运：春雷发动，诸事吉祥。 财运：新货上市，必有大利。 家宅：祈神祭祖，可保平安。 身体：祷告静心。 传统解卦 这个卦是异卦（下坤上震）相叠，坤为地，为顺；震为雷，为动。雷依时出，预示大地回春。因顺而动，和乐之源。此卦与谦卦互为综卦，交互作用。 大象：雷出于地上，阳气奋发，万物欣欣向荣。 运势：如意安泰，可得长辈扶助，但须防色难，凡事应有备而战。 事业：十分顺利，事业可以获得成功，但必须符合实际，顺应潮流，且得自己努力奋斗，树立远大目光，尤其不可因事业的顺利而放松谨慎小心的态度，陷于懒散享乐。否则，必将后悔莫及。 经商：时运已到，应大胆行动，即使发生挫折，也可以很快化险为夷。应加强同他人的合作，开诚布公，共同开发事业。 求名：天资聪颖，如能坚守正直的\n"
     ]
    }
   ],
   "source": [
    "base_response, ft_response = compare_chatglm_results(\"解释下豫卦是什么？\", base_model, qlora_model, training_tag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "52df377c-ed46-4251-8ee0-b272cd38befe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "问题：解释下秦卦是什么？\n",
      "\n",
      "原始输出：\n",
      "秦卦是《易经》中的一卦，由6阳2阴组成，阳爻为阳，阴爻为阴。阳爻为明，阴爻为暗。这一卦象象征着天地，说明阴气阴气相互交织，阴气逐渐增强，阳气逐渐减弱，最终阴气占上风，阳气占下风，天地变化，事物易变。\n",
      "\n",
      "秦卦卦象：同卦为观，观为见；异卦为临，临为居。与秦卦有关的临卦是观，观卦为观者，与异卦关系的是比卦，比卦为比邻。\n",
      " 象曰：山上有明者，秦卦。君子以明破暗，先则自明至于暗。 象曰：泽上有雷，秦卦。君子以明破暗。 发动卦爻：阳为动，阴为终。阳为阳动之君，阴为阴静之臣，合二君臣君宜先动，先臣宜先君，君得臣先动，臣得君先动。舍阴取阳，舍暗取明。舍阴取阳，善用劳心用兵之人。舍暗取明，先发制人。 忠孝卦的象意：见泽上有雷，为观卦，观上无阴，故为明；观下有阴，故为暗。君族观雷，观于下民，民臣暗，君王明，先王下臣，后王上臣，如此，君臣上下交换。 哲学意义：秦卦明雷泽，为阴暗之君，破暗取明，阳动而阴静，明动而暗静，君臣上下交换，贤人出隐。  Timeless Message： The卦 of秦 is the Jordan. The君子 should use brightness to break darkness. \n",
      "Message:秦卦：秦在观者身上，阴暗被君子破，君王若明暗交相因，是我国盛衰在其中。 \n",
      "\n",
      "象曰：山上有雷，秦卦。君子以明破暗。 \n",
      "\n",
      "Message:秦卦：泽上有雷， Watch秦卦。The君子 should use brightness to break darkness. \n",
      "\n",
      "象曰：泽上有雷，临于暗。暗隐因应，明动不疑。 \n",
      "\n",
      "Message:临卦卦象，利阴害阳；阴盛阳衰，君子当隐；时到翻盘，守道自宽。 Message:观察卦的卦象，是临卦；在视觉上，它是阴居阳位，阴暗隐隐，仿佛是暗雷。君子观临卦卦象，喻阴暗中阴静存在，而自己要阳刚坚定，不能被阴暗所阻，所以要打破阴暗，趋向光明，靠靠自 身力量用兵打胜，的是临川学派黄 离的解释。临指运动，雷是运动的声音，有雷声有雷雨有 雷动。明指光明，因阴 气强而阳 气弱，故为暗。明雷 临照万物，阴暗 的是因 雷声小而雷雨大，所以明雷 临下 照万物，阴暗的是因 雷声小而雷雨大，所以明雷 临下暗 相因，阴暗 相 应，阳 光明。 临卦是《易经》中第 41卦的卦名。临是面对、面对 up to、面对 with、in the face of等。《象》中这样解释本卦：山上有雷，秦卦；君子以明破暗，先 则自明至于暗。这意味着：山上有因天气变暖而增大增大声音的雷声。君子应该以光明破阴暗。\n",
      "\n",
      "秦卦卦象：阴爻在下，阳爻在上，为上下卦，表示国家；阳爻上面的三爻为明爻，阴爻下面的三爻为暗爻，表示国家明亮黑暗分别对应阴暗之君子和阳明之君王。\n",
      "\n",
      "秦卦卦象：同卦为观，卦外为观，与异卦关系的是临卦，与秦卦有关的临卦是观，观卦为观者，与异卦关系的是比卦，与秦卦有关的比卦为比邻。\n",
      "\n",
      "秦卦《象》曰：山上有雷，秦卦。君子以明破暗，先则自明至于暗。\n",
      "\n",
      "《象》中这样解释秦卦：山上有雷，否极泰来，明有所动，因阴长阳消。\n",
      "\n",
      "\n",
      "微调后（ChatGLM3-6B(Epoch=3, automade-dataset(fixed))）：\n",
      "[gMASK]sop 解释下秦卦是什么？ 秦卦原文 秦。亨。王假有庙。 象曰：山在川中，秦。君子以明制，立制，故事。 白话文解释 秦卦：通泰。王出郊外祭祀神庙。 《象辞》说：本卦上卦为艮，艮为山；下卦为川，川为水，水在于川，川入艮宫，是秦卦卦象。君子观此卦象，从而在明君之前,修明其政治制度，建立其故事，为天下垂则。 《断易天机》解 秦卦艮上卦，为艮宫游魂卦。此卦下卦为川，上卦为山，官逼民怨，故为通泰卦。 北宋易学家邵雍解 仿古通今，谋事可成；随波逐流，顺利。 得此卦者，随大流，随他人之明者，可成事，但需小心谨慎。 台湾国学大儒傅佩荣解 时运：明哲保身，等待时机。 财运：明目张胆，有失\n"
     ]
    }
   ],
   "source": [
    "base_response, ft_response = compare_chatglm_results(\"解释下秦卦是什么？\", base_model, qlora_model, training_tag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "27064a70-0350-4cae-aa9e-6c4609150b17",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "问题：周易中的观卦是什么含义？\n",
      "\n",
      "原始输出：\n",
      "观卦原文：观。盥而不荐，有孚顒若。见骖于野，尚于知止。观于文王，作ast拉之洪，于以观拉拉。建于黄，迷于用黄。故不系其信。\n",
      "\n",
      "象曰：观天而化，观世而明。观世则仁，无恶而好。观物以官，莫之能改。\n",
      "\n",
      "象曰：小观，以朋友好也；中观，以君王好也；大观，以天下好也。观过则能改，故不至于丧。\n",
      "\n",
      "象曰：风行天下，观；君王省方，观；黄龙卷草，观；君子行礼，观之欲知。\n",
      "\n",
      "运势：诸事指标，不可全信。特别注意：流连忘返、林中望月。\n",
      "\n",
      "事业：事业发展顺利，到了适当的时候，会得到周围人的认可。如果自己能保持谦虚的态度， &&它能够带来好的结果，而如果骄傲自大，结果会是很糟糕的。\n",
      "\n",
      "经商：开始时比较顺利，但必须注意自省，否则林中望月，结果会失望。最后，一定要林中望月，才能获得所求。\n",
      "\n",
      "求名：如果追求 famous and rich 的情况，可能会失望，应保持内心的 pure，求其合理，才能实现。\n",
      " \n",
      "婚恋：朋友介绍，比较合适，但条件必须是合适，否则会失望。 \n",
      "\n",
      "决策：适于眼力 strong 的人，可以作为眼力 weak 的人的参考。如果自己有疑虑，可以寻求朋友和君王的支持，但一定要虚心，否则会有失望。 \n",
      "\n",
      "卦词：观是观察的意思，也是人们根据客观事实做出判断的一种活动。观字从观从。观字含义非常广泛，头一个观是指以天下为对象进行观察，第二个观是指以君王为对象进行观察，第三个观是指以所发生的活动为对象进行观察，第四个观是指以万物为对象进行观察。观卦象征人们用眼睛看。卦象是天者在观视。\n",
      "\n",
      "\n",
      "微调后（ChatGLM3-6B(Epoch=3, automade-dataset(fixed))）：\n",
      "[gMASK]sop 周易中的观卦是什么含义？ 观卦原文 观。盥而不荐，有孚顒若。 象曰：风行地上，观。先王以省方，观民设教。 白话文解释 观卦：祭祀时灌酒降神而不献人牲，因为用作祭祀的俘虏的头部肿了，不能用作祭品。 《象辞》说：本卦上卦为巽为风，下卦为坤为地，风行大地吹拂万物，这是观的卦象。先王观此卦象取法于周流八方的风，从而巡视邦国，观察民情，推行教化。 《断易天机》解 观卦巽上坤下，为乾宫四世卦。观卦象征将道义展示于众人面前。观卦风在上而地在下，是春风浩荡、万物滋生之象。 北宋易学家邵雍解 以下观上，周游观览；平心静气，坚守岗位。 得此卦者，处身于变化之中，心神不宁，宜多观察入微，待机行事，切勿妄进。 台湾国学大儒傅佩荣解 时运：出外游览，不易闲居。 财运：贩卖洋货，须防风险。 家宅：供养神佛。 身体：风湿之症，运动调养。 传统解卦 这个卦是异卦（下坤上巽）相叠，风行地上，喻德教遍施。观卦与临卦互为综卦，交相使用。在上者以道义观天下；在下者以敬仰瞻上，人心顺服归从。 大象：风运行于坤地之上，喻有周游观览之意。阴长阳消，正道衰微，万物难行。 运势：处身于变化之中，宜多观察入微，心身苦恼，并防外来诱惑。 事业：事业已出现不顺利的迹象，务必谦虚慎重，高瞻远瞩，尤忌短期行为，心胸开阔，注意搞好人际关系，团结他人，不宜轻率行动。必要时不妨投靠德行高的人，以图再度发展。 经商：市场形势不稳定，正处于变动，应谨慎小心，随时观察动向，从长计议，做好退却的准备。 求名：贵在自知之明，虚心向他人\n"
     ]
    }
   ],
   "source": [
    "base_response, ft_response = compare_chatglm_results(\"周易中的观卦是什么含义？\", base_model, qlora_model, training_tag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "68fabf88-90dd-4361-ade3-e22160e88c9f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "问题：周易中的大有卦是什么含义？\n",
      "\n",
      "原始输出：\n",
      "大有卦原文 大有。元亨。 象曰：火在天上，大有。君子以遏恶扬善，顺天休命。 白话文解释 大有卦：昌隆通泰。 《象辞》说：本卦下卦为乾为天，上卦为离为火，火在天上，明烛四方，这是大有的卦象。君子观此卦象，取法于火，洞察善恶，抑恶扬善，从而顺应天命，祈获好运。 《断易天机》解 大有卦离上乾下，为乾宫归魂卦。大有卦为柔得尊位，抑恶扬善，丰财利义，象征天命所归，得人心，因此主吉。 北宋易学家邵雍解 日丽中天，遍照万物；盛大富有，持盈保泰。 得此卦者，正当好运，事事吉祥，大有收获，但需防物极必反，盛极转衰。 台湾国学大儒傅佩荣解 时运：亨通无比，大放异彩。 财运：放手去做，财富自来。 家宅：积善之家，子孙保之。 身体：虚火上升，小心诊治。 传统解卦 这个卦是异卦（下乾上离）相叠。上卦为离，为火；下卦为乾，为天。火在天上，普照万物，万民归顺，顺天依时，大有所成。 大象：太阳在天，遍照大地万物，但五阳争一阴，须知有盈即缺。 运势：得时得运，昌荣大吉，但防物极必反，盛极而衰。 事业：事业已经取得一定的成就，最忌得意忘形，胡作非为。务必止恶扬善，坚守中正，交往正直的朋友，戒惧谨慎，兢兢业业，真正做到大而不盈，满而不溢，事业可望迈上新的台阶。 经商：兴隆昌盛，已摆脱困难状态，进入兴旺发达的阶段，如能克制贪财的心理，确守诚信原则，公平待人，克勤克俭，尤其应时刻注意市场动向，适时转轨，可望长久。 求名：已经小有名气，切勿就此满足，停顿不前，尤其不可陷入世俗圈内，应继续努力，在真正朋友的帮助下，更上一层楼。 婚恋：条件优越，可供选择者多，以慎重为好。对于家庭双方应尽力维护。 决策：性格坚强，勇于战胜困难，奋斗向上，前进途中困难和厄运很多，唯有认真对待每个环节，切合实际，尊重规律，不断更新知识，改进方法，可大大减少风险。面对困境，应冷静应对，不可盲目求进，更不可追求物质享受。 第十四卦的哲学含义 大有这一卦是异卦，由乾卦和离卦组成，上卦为离，为火;下卦为乾，为天。火在天上，普照万物，万民归顺，顺天依时，大有所成。 火天大有这一卦，从以下方面的含义而得，《序卦》说：“物不可以终离，故受之以大有。”事物不能永远离散分隔，所以接着会出现大有卦。 《象》中对大有卦的卦象进行了解释，他说：离上乾下，反复必止。这意味着：火在天上，意味着阳光普照大地，万物皆止，然后可以大有收成。 火天大有卦位于丰卦之后，《序卦》卦象，异卦相叠而成。上卦为离，为天，下卦为乾，为天。天在上，火在下， both指阳光。太阳在地球上方升起，阳光普照大地，万物生长，因此，它们都停在原地，所以这就是大有卦。大有卦的卦象， represent the sun rising above the earth and the moon rising above the sun. Both symbols are above, which means the sun and the moon. The sun rises in the east and the moon rises in the west. This is the image of止止其欲，谐和自省。《象》曰：火在天上，反复必止；君子以遏恶扬善，顺天休命。这句话解释说：离火在上，乾天在下，火在天上必归归日，喻顺天命，顺自然规律，顺天休命。也就是说，大火在天上，反复必止；君子应仿照这一精神，遏制邪恶，宣扬善良，顺天命，顺自然规律，做出最好的结果。 大有卦启示了顺天依时道理，属于中上卦。《象》中这样来断此卦：遇官解是非，遇民求利，遇难见难，此吉消彼否。 大有卦卦象：火天大有卦的卦象为火风大有，火上于天，风下于地。\n",
      "\n",
      "\n",
      "微调后（ChatGLM3-6B(Epoch=3, automade-dataset(fixed))）：\n",
      "[gMASK]sop 周易中的大有卦是什么含义？ 大有卦原文 大有。元亨。 象曰：火在天上，大有。君子以遏恶扬善，顺天休命。 白话文解释 大有卦：昌隆通泰。 《象辞》说：本卦下卦为乾为天，上卦为离为火，火在天上，明烛四方，这是大有的卦象。君子观此卦象，取法于火，洞察善恶，抑恶扬善，从而顺应天命，祈获好运。 《断易天机》解 大有卦离上乾下，为乾宫归魂卦。大有卦为柔得尊位，抑恶扬善，丰财利义，象征天命所归，得人心，因此主吉。 北宋易学家邵雍解 日丽中天，遍照万物；盛大富有，持盈保泰。 得此卦者，正当好运，事事吉祥，大有收获，但需防物极必反，盛极转衰。 台湾国学大儒傅佩荣解 时运：亨通无比，大放异彩。 财运：放手去做，财富自来。 家宅：积善之家，子孙保之。 身体：虚火上升，小心诊治。 传统解卦 这个卦是异卦（下乾上离）相叠。上卦为离，为火；下卦为乾，为天。火在天上，普照万物，万民归顺，顺天依时，大有所成。 大象：太阳在天，遍照大地万物，但五阳争一阴，须知有盈即缺。 运势：得时得运，昌荣大吉，但防物极必反，盛极而衰。 事业：事业已经取得一定的成就，最忌得意忘形，胡作非为。务必止恶扬善，坚守中正，交往正直的朋友，戒惧谨慎，兢兢业业，真正做到大而不盈，满而不溢，事业可望迈上新的台阶。 经商：兴隆昌盛，已摆脱困难状态，进入兴旺发达的阶段，如能克制贪财的心理，确守诚信原则，公平待人，克勤克俭，尤其应时刻注意市场动向，适时转轨，可望长久。 求名：已经小有名气，切勿就此满足，停顿不前，尤其不可陷入世俗圈内，应继续努力，在真正\n"
     ]
    }
   ],
   "source": [
    "base_response, ft_response = compare_chatglm_results(\"周易中的大有卦是什么含义？\", base_model, qlora_model, training_tag)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1efcd0f7-51c1-46e7-962b-6a7131692062",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
